package zw_401_500.zw_459_重复的子字符串;

import java.util.HashMap;
import java.util.Map;

class Solution {

    public static void main(String[] args) {
        String s = "abc";
        boolean b = repeatedSubstringPattern(s);
        System.out.println(b);
    }

    /**
     * 方法二：字符串匹配
     * 我们将两个 s 连在一起，并移除第一个和最后一个字符。如果 s 是该字符串的子串，那么 s 就满足题目要求。
     * int indexOf(String str, int fromIndex):
     *      返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引，如果此字符串中没有这样的字符，则返回 -1。
     *
     * @param s
     * @return
     */
    public static boolean repeatedSubstringPattern(String s) {
        String ss = (s + s);
        int index = ss.indexOf(s, 1);
        return (s + s).indexOf(s, 1) != s.length();
    }


    /**
     * 方法一：枚举
     * 时间复杂度：O(n^2)，其中 n 是字符串 s 的长度。枚举 i 的时间复杂度为 O(n)，遍历 s 的时间复杂度为 O(n)，相乘即为总时间复杂度。
     * 空间复杂度：O(1)。
     *
     * @param s
     * @return
     */
//    public static boolean repeatedSubstringPattern(String s) {
//        int n = s.length();
//        for (int i = 1; i * 2 <= n; ++i) {
//            if (n % i == 0) {
//                boolean match = true;
//                for (int j = i; j < n; ++j) {
//                    if (s.charAt(j) != s.charAt(j - i)) {
//                        match = false;
//                        break;
//                    }
//                }
//                if (match) {
//                    return true;
//                }
//            }
//        }
//        return false;
//    }
}